// pages/user/profile/profile.js
const app = getApp()
const userApi = require('../../../api/user.js')
const registrationApi = require('../../../api/registration.js')
const voteApi = require('../../../api/vote.js')
const auth = require('../../../utils/auth.js')
const util = require('../../../utils/util.js')
const api = require('../../../utils/api.js')

Page({
  data: {
    userInfo: null,
    registrationCount: 0,
    voteCount: 0,
    // 新增：临时存储头像和昵称
    tempAvatarUrl: '',
    tempNickname: '',
    // 关于作者弹窗
    showAboutModal: false
  },

  onLoad() {
    this.loadUserData()
  },

  onShow() {
    this.loadUserData()
  },

  // 加载用户数据
  async loadUserData() {
    const userInfo = wx.getStorageSync('userInfo')
    
    if (userInfo) {
      this.setData({ userInfo })
      this.loadStatistics()
    }
  },

  // 加载统计数据
  async loadStatistics() {
    try {
      // 加载报名数量
      const regRes = await registrationApi.getMyRegistrations({ page: 1, page_size: 1 })
      if (regRes.code === 200) {
        this.setData({
          registrationCount: regRes.data.total || 0
        })
      }

      // 加载加油数量
      const voteRes = await voteApi.getMyVotes({ page: 1, page_size: 1 })
      if (voteRes.code === 200) {
        this.setData({
          voteCount: voteRes.data.total || 0
        })
      }
    } catch (error) {
      console.error('加载统计数据失败:', error)
    }
  },

  // 下拉刷新
  onPullDownRefresh() {
    this.loadUserData()
    wx.stopPullDownRefresh()
  },

  // 头像选择（使用新的chooseAvatar API）
  onChooseAvatar(e) {
    try {
      const { avatarUrl } = e.detail
      console.log('✅ 选择头像:', avatarUrl)
      
      if (!avatarUrl) {
        console.warn('⚠️ 未获取到头像')
        wx.showModal({
          title: '提示',
          content: '未获取到头像，请重试或检查隐私授权设置',
          showCancel: false
        })
        return
      }
      
      this.setData({
        tempAvatarUrl: avatarUrl
      })
      
      util.showSuccess('头像选择成功')
    } catch (error) {
      console.error('❌ 选择头像失败:', error)
      wx.showModal({
        title: '需要授权',
        content: '为了完善个人资料，需要您同意隐私保护指引并允许选择头像。',
        showCancel: false,
        confirmText: '我知道了'
      })
    }
  },

  // 昵称输入
  onNicknameInput(e) {
    this.setData({
      tempNickname: e.detail.value
    })
  },

  // 昵称输入完成（会触发微信的内容安全检测）
  onNicknameBlur(e) {
    try {
      const nickname = e.detail.value
      console.log('✅ 昵称输入:', nickname)
      
      if (!nickname || !nickname.trim()) {
        console.warn('⚠️ 昵称为空')
        return
      }
      
      // 微信会自动进行内容安全检测，如果不通过会清空
      // 检查昵称长度
      if (nickname.trim().length < 2) {
        wx.showToast({
          title: '昵称至少2个字符',
          icon: 'none'
        })
      }
    } catch (error) {
      console.error('❌ 昵称输入失败:', error)
    }
  },

  // 确认登录
  async doLogin() {
    try {
      const { tempAvatarUrl, tempNickname } = this.data
      
      // 验证
      if (!tempNickname || !tempNickname.trim()) {
        util.showError('请输入您的昵称')
        return
      }
      
      wx.showLoading({ title: '登录中...' })
      
      console.log('🚀 开始登录...')
      console.log('🏷️ 昵称:', tempNickname)
      console.log('🖼️ 头像:', tempAvatarUrl)
      
      // 获取微信登录code
      const code = await auth.wxLogin()
      
      // 先获取token（使用临时头像）
      let avatarUrl = tempAvatarUrl || '/assets/icons/logo1.png'
      
      const userInfo = {
        nickName: tempNickname,
        avatarUrl: avatarUrl  // 先使用临时路径
      }
      
      const success = await app.login(code, userInfo)
      
      if (!success) {
        wx.hideLoading()
        util.showError('登录失败，请重试')
        return
      }
      
      // 登录成功后，如果有选择头像，则上传到服务器
      if (tempAvatarUrl && tempAvatarUrl.startsWith('wxfile://')) {
        try {
          console.log('📤 上传头像到服务器...')
          const serverAvatarUrl = await api.uploadAvatar(tempAvatarUrl)
          console.log('✅ 头像上传成功:', serverAvatarUrl)
          
          // 更新用户头像
          await api.put('/user/info', { avatar_url: serverAvatarUrl })
          console.log('✅ 头像已更新到用户资料')
        } catch (uploadError) {
          console.warn('⚠️ 头像上传失败，但登录成功:', uploadError)
          // 不阻塞登录流程
        }
      }
      
      wx.hideLoading()
      util.showSuccess('登录成功')
      
      // 清空临时数据
      this.setData({
        tempAvatarUrl: '',
        tempNickname: ''
      })
      
      this.loadUserData()
      
    } catch (error) {
      wx.hideLoading()
      console.error('❌ 登录失败:', error)
      util.showError('登录失败：' + (error.message || '请重试'))
    }
  },

  // 退出登录（两个方法名都保留，兼容不同调用）
  logout() {
    this.doLogout()
  },

  doLogout() {
    wx.showModal({
      title: '提示',
      content: '确定要退出登录吗？',
      success: (res) => {
        if (res.confirm) {
          app.logout()
          this.setData({ 
            userInfo: null,
            tempAvatarUrl: '',
            tempNickname: ''
          })
          util.showSuccess('已退出登录')
        }
      }
    })
  },

  // 跳转到我的报名
  goToMyRegistrations() {
    if (!auth.requireLogin()) return
    
    wx.navigateTo({
      url: '/pages/user/my-registrations/my-registrations'
    })
  },

  // 跳转到我的加油
  goToMyVotes() {
    if (!auth.requireLogin()) return
    
    wx.navigateTo({
      url: '/pages/user/my-votes/my-votes'
    })
  },

  // 跳转到管理后台
  goToAdmin() {
    if (!auth.requireAdmin()) return
    
    wx.navigateTo({
      url: '/pages/admin/dashboard/dashboard'
    })
  },

  // 关于作者
  showAbout() {
    this.setData({
      showAboutModal: true
    })
  },
  
  // 关闭关于作者弹窗
  closeAboutModal() {
    this.setData({
      showAboutModal: false
    })
  },
  
  // 防止点击弹窗内容时关闭
  preventClose() {
    // 空函数，阻止事件冒泡
  },

  // 分享给好友/群聊
  onShareAppMessage() {
    return {
      title: '探索语言成长社 - 演讲活动管理',
      path: '/pages/index/index',
      imageUrl: '/assets/images/activity01.jpg'
    }
  }
})

